package com.platform.common.util.file;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;

/**
 * 
 * @todoTODO 把properties中的值添加到全局的map对象中
 */
public class PropertyToMap {
	private static Map<String, String> map = null;

	static {
		// TODO 把拦截器的配置文件添加到map中，有需要的可以在下面后缀其它的配置文件
		loadFileToMap("msmq.properties");
	}
	
	public static void main(String[] args) {
		
		String value = PropertyToMap.getValue("timeCount");
		System.out.println(value);
	}

	/**
	 * 加载指定的properties配置文件到全局的map对象中
	 * 
	 * @param filePath
	 */
	private static void loadFileToMap(String filePath) {
		// 判断map是否为空
		if (null == map) {
			// 当map为空时初始化map对象
			map = new HashMap<String, String>();
		}
		if (null == filePath || "".equals(filePath.trim())) {
			System.out.println("The file path is null,return");
			return;
		}
		filePath = filePath.trim();
		// 获取资源文件
		InputStream is = PropertyToMap.class.getClassLoader().getResourceAsStream(filePath);
		// 属性列表
		Properties prop = new Properties();
		try {
			// 从输入流中读取属性列表
			prop.load(is);
			// 返回Properties中包含的key-value的Set视图
			Set<Entry<Object, Object>> set = prop.entrySet();
			// 返回在此Set中的元素上进行迭代的迭代器
			Iterator<Map.Entry<Object, Object>> it = set.iterator();
			// 循环取出key-value
			while (it.hasNext()) {
				Entry<Object, Object> entry = it.next();
				// 获取properties的key
				String key = entry.getKey().toString();
				// 获取properties的value
				String value = entry.getValue() == null ? "" : entry.getValue().toString();
				// 把遍历的properties的数据添加到map对象中
				map.put(key, value);
			}
		} catch (IOException e) {
			System.out.println("load file faile." + e);
			return;
		}

	}

	/**
	 * 根据传递的key获取map中的值
	 * 
	 * @param key
	 *            文件中的key
	 * @return key对应的结果
	 */
	public static String getValue(String key) {
		if (null == map) {
			System.out.println("map is null!");
			return null;
		}
		return map.get(key);
	}
}
